import dayjs from 'dayjs'
import 'dayjs/locale/zh-cn'
import relativeTime from 'dayjs/plugin/relativeTime'
import calendarPlugin from 'dayjs/plugin/calendar'

// 设置语言为中文
dayjs.locale('zh-cn')

// 加载插件
dayjs.extend(relativeTime)
dayjs.extend(calendarPlugin)

/**
 * 格式化日期
 * @param {string|Date} date 日期
 * @param {string} format 格式
 * @returns {string} 格式化后的日期字符串
 */
export function formatDate(date, format = 'YYYY-MM-DD') {
  return dayjs(date).format(format)
}

/**
 * 格式化时间
 * @param {string|Date} date 日期
 * @param {string} format 格式
 * @returns {string} 格式化后的时间字符串
 */
export function formatTime(date, format = 'HH:mm:ss') {
  return dayjs(date).format(format)
}

/**
 * 格式化日期时间
 * @param {string|Date} date 日期
 * @param {string} format 格式
 * @returns {string} 格式化后的日期时间字符串
 */
export function formatDateTime(date, format = 'YYYY-MM-DD HH:mm:ss') {
  return dayjs(date).format(format)
}

/**
 * 获取相对时间
 * @param {string|Date} date 日期
 * @returns {string} 相对时间字符串
 */
export function fromNow(date) {
  return dayjs(date).fromNow()
}

/**
 * 获取日历时间
 * @param {string|Date} date 日期
 * @returns {string} 日历时间字符串
 */
export function formatCalendar(date) {
  return dayjs(date).calendar()
}

/**
 * 计算两个日期之间的差异
 * @param {string|Date} date1 日期1
 * @param {string|Date} date2 日期2
 * @param {string} unit 单位 (day, month, year等)
 * @returns {number} 差异值
 */
export function diff(date1, date2, unit = 'day') {
  return dayjs(date1).diff(dayjs(date2), unit)
}

export default dayjs
